package com.dex4d.ui.dapp.model;

import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;

import java.util.List;

/**
 * 作者    LiQingyi
 * 时间    2018/12/3 14:35
 * 文件    dex4d-android
 * 描述
 */
@Dao
public interface HistoryDao {

    /**
     * 获取所有浏览记录
     *
     * @return
     */
    @Query("SELECT * FROM History ORDER BY timestamp DESC")
    List<History> getAll();

    /**
     * 获取所有已标记的书签
     *
     * @param bookmark
     * @return
     */
    @Query("SELECT * FROM History WHERE bookmark=:bookmark ORDER BY timestamp DESC")
    List<History> getAll(int bookmark);

    /**
     * 通过ID获取信息
     *
     * @param id
     * @return
     */
    @Query("SELECT * FROM History WHERE id=:id")
    History getItemFromId(long id);

    /**
     * 通过MD5获取相关记录
     *
     * @param md5
     * @return
     */
    @Query("SELECT * FROM History WHERE md5=:md5")
    History getItemFromMd5(String md5);

    /**
     * 通过MD5更新记录时间
     *
     * @param timestamp
     * @param md5
     */
    @Query("UPDATE History SET timestamp=:timestamp WHERE md5=:md5")
    void updateTimeStampFromMd5(long timestamp, String md5);

    /**
     * 通过ID更新时间戳
     *
     * @param timestamp
     * @param id
     */
    @Query("UPDATE History SET timestamp=:timestamp WHERE id=:id")
    void updateTimeStampFromId(long timestamp, long id);

    /**
     * 更新书签收藏
     *
     * @param bookmark
     * @param id
     */
    @Query("UPDATE History SET bookmark=:bookmark WHERE id=:id")
    void updateBookMarkFromId(int bookmark, long id);

    /**
     * 更新书签收藏
     *
     * @param bookmark
     * @param md5
     */
    @Query("UPDATE History SET bookmark=:bookmark WHERE md5=:md5")
    void updateBookMarkFromId(int bookmark, String md5);

    /**
     * 插入条新记录
     *
     * @param history
     */
    @Insert
    void insertItem(History history);

    @Delete
    void deleteItem(History history);

    /**
     * 根据ID删除一条记录
     *
     * @param id
     */
    @Query("DELETE FROM History WHERE id=:id")
    void deleteItemFromId(int id);
}
